package com.niiwoo.civet.account.service;

import com.niiwoo.civet.account.dto.common.LanMaoGatewayRequestDTO;
import com.niiwoo.civet.account.dto.request.*;
import com.niiwoo.civet.account.dto.response.AccountRegisterStatusResponseDTO;
import com.niiwoo.civet.account.dto.response.UpdateActivateAccountOrderResponseDTO;
import com.niiwoo.civet.account.dto.response.UpdateEnterpriseAccountResponseDTO;
import com.niiwoo.civet.account.dto.response.UpdateGroupRegisterOrderResponseDTO;
import com.niiwoo.civet.account.dto.response.UpdateRegisterOrderResponseDTO;
import com.niiwoo.civet.account.enums.OpenAccountRecordStatusEnum;

/**
 * 开户API
 */
public interface AccountRegisterDubboService {

    /**
     * 是否已开户
     */
    AccountRegisterStatusResponseDTO verifyStatus(AccountRegisterStatusRequestDTO requestDTO);

    /**
     * 查询开户状态
     */
    OpenAccountRecordStatusEnum queryStatus(AccountRegisterStatusRequestDTO requestDTO);

    /**
     * 创建个人绑卡注册开户订单
     */
    LanMaoGatewayRequestDTO createPersonalBindBankCardRegisterOrder(CreateRegisterOrderRequestDTO requestDTO);

    /**
     * 创建集团账户关联开户订单
     */
    LanMaoGatewayRequestDTO createGroupAccountCorrelateOrder(CreateRegisterOrderRequestDTO requestDTO);


    /**
     * 更新个人绑卡注册订单
     */
    UpdateRegisterOrderResponseDTO updatePersonalBindBankCardRegisterOrder(UpdateRegisterOrderRequestDTO requestDTO);


    /**
     * 更新集团账户关联订单
     */
    UpdateGroupRegisterOrderResponseDTO updateGroupAccountCorrelateOrder(UpdateGroupAccountCorrelateRequestDTO updateRequestDto);


    /**
     * 创建账户激活订单
     */
    LanMaoGatewayRequestDTO createAccountActivateOrder(CreateRegisterOrderRequestDTO createOrderRequestDto);

    /**
     * 更新激活账户订单
     * @param updateRequestDto
     * @return
     */
    UpdateActivateAccountOrderResponseDTO updateActivateAccountOrder(UpdateActivateAccountRequestDTO updateRequestDto);

    /**
     * 企业换绑卡
     * @param requestDTO
     * @return
     */
    LanMaoGatewayRequestDTO createCompanyBindBankCardOrder(CreateCompanyRegisterOrderRequestDTO requestDTO);

    /**
     * 更新企业激活
     */
    UpdateEnterpriseAccountResponseDTO updateMockEnterpriseOrder(UpdateEnterpriseAccountRequestDTO updateRequestDto);

    /**
     * 企业注册绑卡
     * @param createOpenCompanyAccountOrder
     * @return
     */
    default LanMaoGatewayRequestDTO createOpenCompanyAccountOrder(OpenCompanyAccountRequestDTO createOpenCompanyAccountOrder){return null;}

    /**
     * 企业注册绑卡回调
     * @param openCompanyAccountCallbackReqDTO
     */
    default void openCompanyAccountCallback(OpenCompanyAccountCallbackReqDTO openCompanyAccountCallbackReqDTO){}

}
